const cloud = require("wx-server-sdk");
cloud.init({
  env: "cloud1-6gu96tpze57c3ae6", // 自动匹配当前环境
});
const db = cloud.database();
const userCollection = db.collection("usersDataList");
const recordCollection = db.collection("recordsData");

// 生成唯一ID的函数
const generateUniqueId = () => {
  return Date.now().toString(36) + Math.random().toString(36).substr(2, 5);
};

// 云函数入口函数
exports.main = async (event, context) => {
  const { selectedUserId, selfMag, ygd, yzd, tagSelect } = event;
  const wxContext = cloud.getWXContext(); // 获取微信上下文

  try {
    // 获取用户数据
    const userRes = await userCollection
      .where({
        _openid: wxContext.OPENID,
      })
      .get();

    let userData = null;

    if (userRes.data && userRes.data.length > 0 && userRes.data[0].records) {
      userData = userRes.data[0].records.find(
        (item) => item.id == selectedUserId
      );
    }

    // 如果是新增数据，userData 为 null 是正常的
    if (!userData && !event.isNewUser) {
      return {
        success: false,
        message: "未找到用户数据",
      };
    }

    // 构建新记录
    const newRecord = {
      id: generateUniqueId(), // 添加唯一标识符
      selfMag,
      ygd,
      yzd,
      tagSelect,
      createTime: new Date().getTime(), // 添加创建时间
    };

    // 查询是否已存在记录
    const queryRes = await recordCollection
      .where({
        _id: selectedUserId,
      })
      .get();

    if (queryRes.data.length > 0) {
      // 如果记录已存在，更新 recordsdata 数组
      await recordCollection.doc(queryRes.data[0]._id).update({
        data: {
          recordsdata: db.command.push(newRecord),
        },
      });
    } else {
      // 如果记录不存在，创建新记录
      await recordCollection.add({
        data: {
          _openid: wxContext.OPENID, // 从微信上下文中获取OPENID
          _id: selectedUserId,
          recordsdata: [newRecord],
          userdata: userData,
        },
      });
    }

    return {
      success: true,
      message: "保存成功",
    };
  } catch (error) {
    console.error(error);
    return {
      success: false,
      message: "保存失败",
      error: error,
    };
  }
};
